

// 声明: 类型 = 值

// 函数表达式
export const add: () => void = () => { }
export let add2: (x: number, y: number) => number = (x: number, y: number) => {
	return x + y
}


// 函数声明
export function add1(): number {
	return 1
}

// 需求
// 要求我们封装一个函数， 该函数可以接受1个或者2个或者4个参数， 但是不可以接受3个参数。
// 函数重载：同名函数接受不同类型参数的个数

function testFn(a: string): { a: string, b: string, c: string, d: string }
function testFn(a: string, b: string): { a: string, b: string, c: string, d: string }
function testFn(a: string, b: string, c: string, d: string): { a: string, b: string, c: string, d: string }

function testFn(a: string, b?: string, c?: string, d?: string) {
	if(b === undefined && c === undefined && d === undefined) {
			b = c = d = a
	} else if (c === undefined && d === undefined) {
		c = a
		d = b
	} 
	return {
		a,b,c,d
	}
}

testFn('1')
testFn('1', '2')
// 重载
// testFn('1', '2', '3')
testFn('1', '2', '3', '4')